KonstRuctor
Заглянувший
Joined: 22 May 2006
Posts: 11
Карма: 0 поощрить/наказать
|
Posted: Mon May 22, 2006 2:35 am (написано за 6 минут 56 секунд)
Post subject: Выбор случайной записи (PHP+MySQL)
|
|
Баннеры выводятся в двух местах: в шаблоне и в теле страницы. Вывожу так: Code (php): | скопировать код в буфер обмена | $result=mysql_query (www.php.net/mysql_query)("SELECT code FROM table WHERE type = 'flash' AND active = '1' ORDER by rand() LIMIT 1"); | По идее при перезагрузке страницы каждый раз должен выводится рандомный баннер. Всего в базе 3 баннера. Тот, что в теле страницы -- выводится рандомно. Тот, что в шаблоне -- выводится все время первый из желаемых. Поясню -- index.php:Где искать косяк?
|
|
Денис Радченко
Заглянувший
Joined: 30 Aug 2006
Posts: 19
Карма: 1 поощрить/наказать
Location: Чебоксары
|
Posted: Thu Aug 31, 2006 2:39 pm (спустя 3 месяца 9 дней 12 часов 4 минуты; написано за 3 минуты 27 секунд)
Post subject:
|
|
KonstRuctor Сталкивался с этой проблеммой когда-то, как я понял данный баг из-за некоректной работы RAND() в mySQL. Должен работать такой код. Code (php): | скопировать код в буфер обмена | $total = @mysql_result (www.php.net/mysql_result)(mysql_query (www.php.net/mysql_query)("SELECT COUNT(*) FROM table WHERE type='flash' && active = 1"),0,0); $rand = rand (www.php.net/rand)(0,$total-1); // Перед этим нужно инициализировать генератор $result=mysql_query (www.php.net/mysql_query)("SELECT code FROM table WHERE type = 'flash' AND active = '1' LIMIT {$rand},1"); |
|
|
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151
Карма: 271 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Thu Aug 31, 2006 2:51 pm (спустя 12 минут; написано за 1 минуту 47 секунд)
Post subject:
|
|
KonstRuctor
раз баннеров всего три - может, лучше сделать выборку всего и рандом на PHP ? Мне доводилось сталкиваться с тем, что MySQL (4.1.12, кажется) иногда возвращал 0 записей. Кроме того, ORDER BY замедляет запрос.
|
|